package com.mazaiting.manager.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mazaiting.manager.domain.entity.SysRoleMenu;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 * 角色关联的菜单 服务类
 * </p>
 *
 * @author 麻再挺
 * @since 2022-09-06
 */
public interface ISysRoleMenuService extends IService<SysRoleMenu> {

    /**
     * 保存角色 ID 与 菜单 ID 的关系
     * @param roleId 角色 ID
     * @param menuId 菜单 ID
     */
    @Transactional(rollbackFor = Exception.class)
    boolean save(Long roleId, Long menuId);

    /**
     * 获取角色拥有的菜单ID集合
     * @param roleId 角色 ID
     * @return 角色拥有的菜单ID集合
     */
    List<Long> listMenuIdsByRoleId(Long roleId);

    /**
     * 删除角色ID对应的菜单
     * @param roleId 角色 ID
     * @return true: 删除成功; false: 删除失败
     */
    @Transactional(rollbackFor = Exception.class)
    boolean deleteByRoleId(Long roleId);

    /**
     * 保存角色与菜单的关系
     * @param roleId 角色 ID
     * @param menuIds 菜单 ID 列表
     * @return true: 保存成功; false: 保存失败
     */
    @Transactional(rollbackFor = Exception.class)
    boolean save(Long roleId, List<Long> menuIds);
}